From 975a49cb6ecf4ff78ca05695705a1f808b39ca88 Mon Sep 17 00:00:00 2001 From: "emellor@leeni.uk.xensource.com" Date: Mon, 27 Feb 2006 16:14:11 +0100 Subject: [PATCH] While testing TCP & UDP tests (coming soon), I tracked down a bug in the IP addressing scheme used by xm-test: each machine running network tests is using the same IP addresses, so two machines in the same network can cross-pollinate/interfere with each other's tests. This patch changes the IP addressing scheme to add some randomness. It's gone through a couple of dozen passes of xm-test, some on -bridge and some on -route, while xm-test was running on another box on the same network. Signed-off-by: Jim Dykman --- tools/xm-test/lib/XmTestLib/Network.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tools/xm-test/lib/XmTestLib/Network.py b/tools/xm-test/lib/XmTestLib/Network.py index d9d12c5439..39797ab06e 100644 --- a/tools/xm-test/lib/XmTestLib/Network.py +++ b/tools/xm-test/lib/XmTestLib/Network.py @@ -22,6 +22,7 @@ import sys; import os; import atexit; +import random; from Test import * from Xm import * @@ -53,12 +54,22 @@ class XmNetwork: if rc == 0: SKIP("Zeroconf address found: " + out) + # Randomize one octet of the IP addresses we choose, so that + # multiple machines running network tests don't interfere + # with each other. + self.subnet = random.randint(1,254) + def calc_ip_address(self, dom, interface): # Generate an IP address from the dom# and eth#: - # 169.254.(eth#+153).(dom#+10) + # 169.254.(self.subnet).(eth#)*16 + (dom# + 1) ethnum = int(interface[len("eth"):]) + if (ethnum > 15): + raise NetworkError("ethnum > 15 : " + interface) domnum = int(dom[len("dom"):]) - return "169.254."+ str(ethnum+153) + "." + str(domnum+10) + if (domnum > 14): + raise NetworkError("domnum > 14 : " + dom) + + return "169.254."+ str(self.subnet) + "." + str(ethnum*16+domnum+1) def ip(self, dom, interface, todomname=None, toeth=None, bridge=None): newip = self.calc_ip_address(dom, interface) @@ -96,4 +107,4 @@ class XmNetwork: return newip def mask(self, dom, interface): - return "255.255.255.0" + return "255.255.255.240" -- 2.30.2